load("02_17_m5s_forum_text_cleaned_unique.RData")

stopwords_mylist <- unique(c("essere", "quindi", "anni", "cosa", "coso", "fare", "solo", "pensare",
                      "deve", "ben", "bene", "quando", "prima", "dopo", "tanto", "dico",
                      "molto", "dice", "dire", "come", "dato", "primo", "ciao", "fine", "poi",
                      "proprio", "piu", "più", "piú", "sempre", "senza", "tempo", "credo",
                      "credere", "perche", "perché", "perchè", "à\u0083à",
                      "â\u0080\u009aì", "â\u0080\u009eà", "può", "italia", "italiani", "però",
                      "nemmeno","volta","volte","fatto","fatti","basta","grazie","nessuno","nessuni",
                      "giorno", "mai", "male", "mal", "buon", "buono","nemmeno","vorrei","penso","tutto","tutti",
                      "così","ancora","forse", "altri","altro","modo","parte","qui","www","http",
                      "oggi","italiana","modo","ogni","attraverso","circa","ciò","già","qualche",
                      "dobbiamo","dovrebbe","tutte","potrebbe","meno","far","ecc","due","altre","width",
                      "vuoi","ora","italiano","ecco","allora","comunque","qualcuno","vedere","seguenti",
                      "gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre",
                      "ottobre","novembre","dicembre","possono","ecc","certo","poco","presente","molti",
                      "niente","quel","vuole","fino","seguenti","almeno","andare","rispetto","altre","vero",
                      "nulla","comunque","meglio","dare","due","cose","possono","caso","ora","tutta",
                      "stata","stessa","soprattutto","nuovo","tanti","possa","via","qualsiasi","tipo","altra",
                      "possibilità","quali","sembra","possibile","anno","viene","invece","vita","avere"))

createDTM <- function(text_vector){
  require(tm)
  require(SnowballC)
  # Prepare corpus
  tm_corpus <- Corpus(VectorSource(text_vector))
  tm_corpus <- tm_map(tm_corpus, tolower)
  tm_corpus <- tm_map(tm_corpus, removeWords, c(stopwords("italian"),stopwords_mylist))
  tm_corpus <- tm_map(tm_corpus, removeNumbers)
  tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
  # tm_corpus <- tm_map(tm_corpus, stemDocument, language="italian")
  tm_corpus <- tm_map(tm_corpus, stripWhitespace)
  tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
  tm_dtm <- DocumentTermMatrix(tm_corpus, control = list(minWordLength = 3))
  return(tm_dtm)
}

print('sampling')
# MORE THAN 16 words
forum_text_16words <- forum_text[forum_text$n_words > 16,]
forum_text_lda <- forum_text_16words[sample(1:nrow(forum_text_16words),50000),]
# forum_text_lda <- forum_text_16words
forum_dtm <- createDTM(forum_text_lda$text)

require(tm)
require(slam)
require(topicmodels)

# Unfortunately, I haven't set a seed before running `LDA`. 
print('lda')
lda <- LDA(forum_dtm, k = 15)

save(lda, forum_text_lda, file="02_20_m5s_forum_lda.RData")
